home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / falcon / programm.ing / nt_dsp1.lzh / NT_DSP1.MSA / FNTNS / RAND1.ASM < prev    next >
Assembly Source File  |  1989-01-24  |  3KB  |  67 lines

  1. ;
  2. ; This program originally available on the Motorola DSP bulletin board.
  3. ; It is provided under a DISCLAIMER OF WARRANTY available from
  4. ; Motorola DSP Operation, 6501 Wm. Cannon Drive W., Austin, Tx., 78735.
  5. ; Last Update 16 Apr 87   Version 1.1
  6. ;
  7.                                                                                                                                
  8. ;
  9. ;       RANDOM NUMBER GENERATOR USING A 15 BIT SHIFT REGISTER
  10. ;
  11. ;
  12. ;
  13. ;
  14.         PAGE    132,66,0,10
  15.         ORG     X:0
  16. NSTATE  DS      1               ;STATE OF NOISE GENERATOR (SHIFT REG)
  17.  
  18.         ORG     P:$100
  19. INIT
  20.         MOVE    #$FF,X0         ;INITIAL STATE OF NOISE GENERATOR
  21.         MOVE    X0,X:NSTATE
  22. GET
  23.         DO      #100,_EGET
  24.         JSR     NOISE           ;GENERATE NOISE SAMPLE
  25.         MOVE    X:NSTATE,A      ;GET NOISE
  26.         MOVEP   A1,Y:$FFFF      ;OUTPUT NOISE SAMPLE
  27. _EGET
  28. ;
  29. ;       DONE WITH PROGRAM
  30. ;
  31.         NOP
  32.         NOP
  33.         NOP
  34.         NOP
  35.         NOP
  36.         NOP
  37. ;       NOISE GENERATION ROUTINE.  THIS ROUTINE USES A 15 BIT SHIFT
  38. ;       REGISTER LEFT JUSTIFIED IN THE VARIABLE "NSTATE".  AFTER THE STATE
  39. ;       IS LOADED, IT IS CHECKED TO SEE IF IT IS NORMALIZED.  IF IT IS
  40. ;       NORMALIZED (TOP TWO BITS ARE DIFFERENT), A 1 IS SET AS THE INPUT
  41. ;       TO THE SHIFT REGISTER AND THE REGISTER IS SHIFTED AND SAVED.
  42. ;
  43. ;         B23     B22                            B9      B8
  44. ;        ______________________________________________
  45. ;       | S14   | S13 |                        | S0   |
  46. ;       |       |     |      . . .             |      |<----------
  47. ;       |_______|_____|________________________|_______          |
  48. ;           |      |                                             |
  49. ;            \    /                                              |
  50. ;              XOR                                               |
  51. ;               \_________________________________________________
  52. ;
  53. ;
  54. ;       ASSUMES SCALING MODE IS OFF
  55. ;
  56. NOISE                                   ;DO NOISE GENERATION LOOP
  57.         CLR     B       X:NSTATE,A      ;GET A ZERO IN B
  58.         TST     A   #>$000100,X0        ;CHECK A, GET A 1 IN LSB POSITION
  59.         TNR     X0,B                    ;IF NORMALIZED, THEN XOR=1
  60.         ADD     B,A                     ;SET LSB
  61.         ASL     A                       ;SHIFT BITS
  62.         MOVE    A1,X:NSTATE             ;SAVE STATE
  63.         RTS                             ;RETURN WITH STATE
  64.         END
  65.  
  66.